package blocksim.chunking;

import java.io.IOException;
import java.util.List;

/**
 * Defines a chunking algorithm strategy to divide the file in blocks.
 * 
 * @author marcus
 */
public interface ChunkingStrategy {

  /**
   * Define the block boundaries for the given file
   * 
   * @param fileName
   *          Path of the file to be divided in blocks
   * @return block boundaries list. The list contain the indices for the bytes
   *         that are considered block boundaries, according to the chunking
   *         strategy.
   * @throws IOException
   */
  public List<Long> detectBoundaries(String fileName) throws IOException;

  public String getName();

  //public DescriptiveStatistics getBlockSizeStats();
}
